﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ClusteringProblem.Model
{
    /// <summary>
    /// Klasa reprezentująca siatkę, kratownicę
    /// </summary>
    public class Plane
    {
        #region Pola

        // siatka, kratownica
        private IAntType[,] plane;
        // rozmiar siatki
        private int size;

        #endregion

        #region Konstruktor

        public Plane(int size)
        {
            this.plane = new IAntType[size, size];
            this.size = size;
        }

        #endregion


        #region Właściwości

        public int Size
        {
            get { return size; }
        }

        #endregion

        #region Metody

        /// <summary>
        /// Sprawdza czy siatka jest zajęta
        /// </summary>
        /// <param name="x">składowa X-owa</param>
        /// <param name="y">składowa Y-owa</param>
        /// <returns></returns>
        public bool isOccupied(int x, int y)
        {
            return this[x, y] == null;
        }

        #endregion

        #region Indekser

        /// <summary>
        /// Indekser wirtualnego agenta
        /// </summary>
        /// <param name="x">składowa X-owa obiektu na siatce</param>
        /// <param name="y">składowa Y-owa obiektu na siatce</param>
        /// <returns>wirtualny agent znajdujący się na x i y pozycji</returns>
        public IAntType this[int x, int y]
        {
            get
            {
                return plane[x, y];
            }

            set
            {
                plane[x, y] = value;
            }
        }

        #endregion
    }
}
